venerdì, gennaio 04, 2008

IIS, FastCGI e PHP


Da diverso tempo orami Microsoft mette e disposizione per chi vuole far girare il PHP su IIS 6.0 l'estensione FastCGI, che permette di far girare in modo veloce e senza intoppi le pagine PHP sul server.

Il modello CGI infatti, oramai superato, generava nel server un nuovo processo per ogni operzione che le pagine PHP chiedevano al web server, e quindi risultava molto lento e dispendioso come risorse.
Installare il PHP come ISAPI invece faceva sì che l'interprete PHP girasse come un thread interno a IIS. Peccato però che alcune estensioni del PHP non siamo thread-safe, il che può generare l'interruzione del servizio web.

Per ovviare a tutti questi inconvenienti ecco FastCGI, che unisce performance a stabilità permettendo ad un processo stile CGI di restare attivo per le richieste successive.
L'installazione non è molto intuitiva e per questo pubblico una breve setup guide.
Prima di tutto scaricare ad installare il pacchetto ed estrarre il PHP in C:\php. Poi posizionarsi in "C:\windows\system32\inetsrv\" e dal prompt dei comandi eseguire una per una queste istruzioni:


  • cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP\php-cgi.exe"

  • cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:10000

  • cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000

che vanno a moificare il file fcgiext.ini nella stessa cartella, configurando l'estensione per tutti i siti web. E' anche possibile configurare FastCGI per un solo sito di IIS; per questo consultare la guida in linea.


Ora dobbiamo dire a IIS che le pagine con estensione PHP vengano date a FastCGI. Per fare ciò avviare inetmgr.exe e dalle proprietà del sito principale cliccare prima su Home directory nelle schede e poi nel pulsante Configurazione... . Nella schermata che appare cliccare su Aggiungi... e come eseguibile dare "C:\windows\system32\inetsrv\fcgiext.dll", come estensione ".php", come verbi "GET,HEAD,POST" e dare ok, avendo cura di controllare che i due check a fine maschera siano selezionati.


Ora non rimane che impostare il file C:\php\php.ini come già pubblicato più volte in questo blog, lasciando però commentata la voce cgi.redirect.
Per provare l'installazione basta usare il solito:

Buon lavoro.

Nessun commento: